let history = {
    maxLength: 100,
    historyList: [],
    historyIndex: -1,
    initialize: function() {
        this.setHistoryList([]);
        this.historyIndex = -1;
    },
    getHistoryList: function() {
        return this.historyList;
    },
    setHistoryList: function(array) {
        for (let i = this.historyList.length - 1; i >= 0; i--) {
            this.historyList.splice(i, 1);
        }
        if (array) {
            for (let i = 0; i < array.length; i++) {
                this.historyList.splice(i, 0, array[i]);
            }
        }
        return this;
    },
    addHistory: function(state, action = 1) {
        if (this.historyList.length >= this.maxLength) {
            this.historyList.splice(0, 1);
            this.historyIndex = this.maxLength - 1;
        }
        this.historyIndex++;
        this.historyList.splice(this.historyIndex, 0, {
            state: state,
            createtime: new Date().getTime(),
            label: action
        });
        for (let i = this.historyList.length - 1; i > this.historyIndex; i--) {
            this.historyList.splice(i, 1);
        }
        return this;
    },
    moveToPrevious: function() {
        return this.moveToIndex(this.historyIndex - 1);
    },
    moveToNext: function() {
        return this.moveToIndex(this.historyIndex + 1);
    },
    moveToIndex: function(index) {
        let state = null;
        if (index >= 0 && index < this.historyList.length) {
            state = this.historyList[index].state;
            this.historyIndex = index;
        }
        return state;
    },
    action: {
        1: '未知',
        2: '创建场景',
        3: '移动组件',
        4: '旋转组件',
        5: '缩放组件',
        6: '删除组件',
        7: '改变顺序',
        8: '修改组件页面',
        9: '创建页面',
        10: '删除页面',
        11: '修改页面',
        12: '修改画布',
        13: '修改画布',
        14: '清除画布',
        15: '添加组件',
        16: '修改透明度',
        17: '修改边框颜色',
        18: '修改边框样式',
        19: '修改边框宽度',
        20: '修改组件圆角',
        21: '修改水平阴影',
        22: '修改垂直阴影',
        23: '修改模糊距离',
        24: '修改阴影大小',
        25: '修改阴影颜色',
        26: '复制组件',
        27: '剪切组件',
        28: '锁定组件',
        29: '解锁组件',
        30: '添加地图模型',
        31: '清除地图模型',
        32: '修改高渲染连接',
        33: '修改高渲染实例',
        34: '修改高渲染导览',
        35: '添加图片',
        36: '添加视频',
        37: '图片自适应',
        38: '图片充满',
        39: '图片实际宽高',
        40: '添加资源库图片',
        41: '拖拽图片顺序',
        42: '添加自定义图片',
        43: '删除多图片',
        44: '修改自定义图片',
        45: '选择资源库视频',
        46: '添加iframe地址',
        47: '添加自定义视频',
        49: '修改标题',
        50: '修改标题颜色',
        51: '修改标题字体粗细',
        52: '修改标题斜体',
        53: '修改标题字体大小',
        54: '修改标题位置',
        55: '修改单位',
        56: '修改单位颜色',
        57: '修改单位字体粗细',
        58: '修改单位斜体',
        59: '修改单位字体大小',
        60: '修改单位位置',
        61: '修改标注最大值',
        62: '修改标注最小值',
        63: '修改标注颜色',
        64: '修改标注字体粗细',
        65: '修改标注字体斜体',
        66: '修改标注字体大小',
        67: '修改x轴轴标签',
        68: '修改x轴轴线',
        69: '修改x轴颜色',
        70: '修改x轴字体粗细',
        71: '修改x轴字体斜体',
        72: '修改x轴字体大小',
        73: '修改径向轴轴标签',
        74: '修改径向轴轴线',
        75: '修改径向轴颜色',
        76: '修改径向轴字体粗细',
        77: '修改径向轴字体斜体',
        78: '修改径向轴字体大小',
        79: '修改y轴轴标签',
        80: '修改y轴轴线',
        81: '修改y轴颜色',
        82: '修改y轴字体粗细',
        83: '修改y轴轴字体斜体',
        84: '修改y轴字体大小',
        85: '修改角度轴轴标签',
        86: '修改角度轴轴线',
        87: '修改角度轴颜色',
        88: '修改角度轴字体粗细',
        89: '修改角度轴字体斜体',
        90: '修改角度轴字体大小',
        91: '修改横向网格',
        92: '修改径向网格',
        93: '修改纵向网格',
        94: '修改角向网格',
        95: '修改显示间隔',
        96: '修改旋转角度',
        97: '修改图例显示',
        98: '修改图例颜色',
        99: '修改图例字体粗细',
        100: '修改图例字体斜体',
        101: '修改图例字体大小',
        102: '修改图例位置',
        103: '修改柱条宽度',
        104: '修改线条粗细',
        105: '修改线条类型',
        106: '修改饼图宽度',
        107: '修改进度条显示',
        108: '修改进度条宽度',
        109: '修改轴线宽度',
        110: '修改刻度样式显示',
        111: '修改分隔线线长',
        112: '修改线宽',
        113: '修改刻度标签距离',
        114: '修改标签字体大小',
        115: '修改中心点显示',
        116: '修改文字字体大小',
        117: '修改指针长度',
        118: '修改指针宽度',
        119: '清除iframe地址',
        120: '修改走马灯速度',
        121: '修改走马灯方向',
        122: '添加菜单根节点',
        123: '添加菜单节点',
        124: '删除菜单节点',
        125: '修改选中颜色',
        126: '修改滚动速度',
        127: '修改多选框属性',
        128: '修改层级联动属性',
        129: '修改配色',
        130: '修改字体大小',
        131: '修改行高',
        132: '修改字间距',
        133: '修改加粗',
        134: '修改水平对齐方式',
        135: '修改垂直对齐方式',
        136: '修改文本',
        137: '修改字体颜色',
        138: '添加事件',
        139: '修改事件',
        140: '删除事件',
        141: '修改背景颜色',
        158: '修改大屏名称',
        159: '修改时针长度',
        160: '修改时针宽度',
        161: '修改时针颜色',
        162: '修改分针长度',
        163: '修改分针宽度',
        164: '修改分针颜色',
        165: '修改秒针长度',
        166: '修改秒针宽度',
        167: '修改秒针颜色',
        168: '修改中心大小',
        169: '修改中心颜色',
        170: '修改刻度线粗细',
        171: '修改刻度线距离',
        172: '修改刻度线颜色',
        173: '修改最外框粗细',
        174: '修改最外框颜色',
        175: '修改文字大小',
        176: '修改文字距离',
        177: '修改文字颜色',
        178: '复制页面',
        179: '清除流媒体地址',
        180: '添加流媒体地址',
        181: '清楚HTML代码',
        182: '添加HTML代码',
        183: '修改字体',
        184: '修改文字水平阴影',
        185: '修改文字垂直阴影',
        186: '修改文字模糊距离',
        187: '修改文字阴影颜色',
    }
};

export default history;